#include<graphics.h>
#include <conio.h>
#include<stdio.h>
int main()
{
   float width,height;
   width=600;
   height=400;
   initgraph(width,height);

   float ball_x,ball_y,ball_vy,radius,gravity;
   radius=20;
   ball_x=width/4;
   ball_y=height-radius;
   ball_vy=0;
   gravity=0.6;
   
   float rect_left_x,rect_top_y,rect_width,rect_height;
   float rect_vx;
   rect_width=20;
   rect_height=100;
   rect_left_x=width*3/4;
   rect_top_y=height-rect_height;
   rect_vx=-3;

   int score=0;
   int isBallonFloor = 1;

   while(1)
   {
     if(kbhit())
	 {
	   char input=_getch(); 
	   if(input==' ' && isBallonFloor == 1)
	   {  
		ball_vy=-16;
	    isBallonFloor = 0; 
	   }
	 }
     ball_vy=ball_vy+gravity;
	 ball_y=ball_y+ball_vy;
	 if(ball_y>=height-radius)
	 {
	   ball_vy=0;
	   ball_y=height-radius;
	   isBallonFloor = 1;
	   }
	 rect_left_x=rect_left_x+rect_vx;
	 if(rect_left_x<=0)
		{ 
		  score=score+1;
		  rect_left_x = width;
		  rect_height = rand()% int(height/4) + height/4; 
		  rect_vx = rand()/float(RAND_MAX)*4 - 7;//矩形随机速度
	 }

         if((rect_left_x<=ball_x+radius)
		 &&(rect_left_x+rect_width>=ball_x-radius)
		 &&(height-rect_height<=ball_y+radius))
		{
			score=0;
			Sleep(100);
		 }

	   cleardevice();
	   fillrectangle(rect_left_x,height - rect_height,rect_width+rect_left_x,height);
       fillcircle(ball_x,ball_y,radius);

	   TCHAR s[20];
	   _stprintf(s,_T("%d"),score);
	   settextstyle(40,0,_T("宋体"));
	   outtextxy(50,30,s);

        Sleep(10);
   
   }


   _getch();
   return 0;//1111

}
